package com.wxj.likou.date241225;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;

/**
 * 使用二分均值法计算红包
 */
public class RedPacket {

    public static void main(String[] args) {
        // 总红包个数
        Integer num = 10;
        // 总金额
        BigDecimal money = new BigDecimal(100);

        // 装红包的袋子
        List<BigDecimal> list = new ArrayList<>();

        int xx = num;
        // 遍历 生成红包 装满袋子
        for (int i = 0; i < xx; i++) {
            if (i == xx -1 ) { // 如果是最后一个，则直接装进袋子里
                list.add(money);
            } else {
                // 计算二分值
                BigDecimal u = money.divide(new BigDecimal(num),2, RoundingMode.HALF_UP).multiply(new BigDecimal(2));
                // 根据一个随机数据生成一个红包金额
                double redPacket = Math.random() * u.doubleValue() + 0.01;
                // 保留元角分
                BigDecimal bRp = new BigDecimal(redPacket).setScale(2, RoundingMode.HALF_UP);
                // 装进袋子
                list.add(bRp);
                // 减掉红包总金额
                money =  money.subtract(bRp);
                // 红包个数减少
                num--;
            }

        }
        System.out.println(list);
    }
}
